パフォーマンスカウンタのデータをCloudWatchカスタムメトリクスにする
はじめに
今日はCloudWatchで素晴らしいアップデートがありました!
- CloudWatch Update - Enhanced Support for Windows Log Files
- Using CloudWatch Logs with Amazon EC2 Running Microsoft Windows Server
Windows ServerのパフォーマンスカウンタのデータをCloudWatchのカスタムメトリクスとして登録できるようになりました。またEvent TracingやカスタムログをCloudWatch Logsで参照することができるようになりました。
そこで今回はパフォーマンスカウンタのデータをCloudWatchのカスタムメトリクスとして登録してみたいと思います!
やってみる
EC2からCloudWatchやCloudWatch Logsにデータを登録するための権限はIAM UserまたはIAM Roleで割り当てます。今回はIAM Roleで割り当てました。以下のような内容で、CloudWatchとCloudWatch Logsにアクセス可能なIAM Roleを作っておきます。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "cloudwatch:*", "logs:*" ], "Effect": "Allow", "Resource": "*" } ] }
このIAM Roleを割り当てた形で、Windows ServerのEC2をLaunchします。今回使ったAMIは「Windows_Server-2012-RTM-Japanese-64Bit-Base-2014.10.15 (ami-5f31005e)」です。また東京リージョン(ap-northeast-1)でLaunchしました。
EC2が起動したらWindows Serverにリモートデスクトップ接続でログインし、C:¥Program Files¥Amazon¥Ec2ConfigService¥Ec2ConfigServiceSettings.exeを実行します。
[Ec2 Service Properties]画面が開きます。[General]タブの[Enable CloudWatch Logs integeration]をチェックし、[OK]ボタンをクリックします。
さて、設定を行います。CloudWatchの設定はC:¥Program Files¥Amazon¥Ec2ConfigService¥Settings¥AWS.EC2.Windows.CloudWatch.jsonを編集しますので、メモ帳で開きます。
まず最初にCloudWatchとCloudWatch Logsへの接続情報を編集します。["Id":"CloudWatch"]と["Id":"CloudWatchLogs"]を探します。今回はIAM Roleを使っているので関係ありませんが、IAM Userを使う場合にはここでAccess KeyとSecret Keyを設定します。またCloudWatch Logsは現時点で東京リージョンでは使えませんのでus-east-1としていますが、CloudWatchについては東京リージョン(ap-northeast-1)に書き換えています。
["Id":"PerformanceCounter"] を探します。初期設定でメモリ使用率を取得するようになっていますので、今回はそのまま使います。他にCPU使用率やディスク使用率などを取得する場合には、Idを"PerformanceCounter1""PerformanceCounter2"のようにして、それぞれユニークなIdを付与します。
最後に、出力(Flows)の設定をします。デフォルトでは以下の通り、アプリケーションログとシステムログをCloudWatch Logsに出力する設定だけが入っています。
ここに、"Id":"PerformanceCounter"を CloudWatchに出力する設定を追加します。追加したら保存して閉じます。
設定を有効にするためにはEC2Configサービスを再起動する必要があります。
では動作確認です。AWS管理コンソールで東京リージョンのCloudWatchを開いてみると、カスタムメトリクスとして[Windows/Default]が登録されていますのでクリックして選択します。
するとこんな感じでメモリ使用率をCloudWatchのグラフとして見ることができます。
ということで出来ました!
まとめ
Windows Serverのパフォーマンスカウンタは様々な数値を取得することが出来ますので、システムの用途に合わせて様々な解析やAlarmを使った通知ができます。これはWindowsサーバ管理者にとってすごく便利な機能だと思います!